package C059.graph;

/**
 * ClassName: GraphInterface
 * Package: C059
 * Description: 图接口，默认为带权有向
 *
 * @Author BCXJ
 * @Create 2025/9/22 08:55
 * @Version 1.0
 * @Since 1.0
 */
public interface GraphInterface {
    // 点数，边数
    void init(int n, int m);

    // 只有点数
    void init(int n);

    // 加入边 （有向边）
    void addEdge(int from, int to, int weight);

    // 图遍历
    // 格式 如下
    /*
    1(邻居、边权) : (5,5) (4,1)
    2(邻居、边权) : (4,6) (3,7) (5,4)
    3(邻居、边权) : (2,7) (4,2) (5,4)
    4(邻居、边权) : (2,6) (3,2) (1,1)
    5(邻居、边权) : (1,5) (2,4) (3,4)
     */
    void print();

    // 构建图
    /**
     * 构建图
     * @param edge
     */
    default void build(int[][] edge) {
        if(null == edge) {
            return;
        }
        for (int i = 0; i < edge.length; i++) {
            addEdge(edge[i][0], edge[i][1], edge[i][2]);
        }
    }
}
